﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Collections;
using System.Threading;
//装箱拆箱与泛型的性能简易测试。
namespace _01_创建泛型类
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            for (int i = 0; i < 100; i++)
            {
                sw.Reset();
                sw.Start();//sw.Start()计时开始
                GetList();//测试代码
                sw.Stop();//计时结束
               
                Console.WriteLine("执行时间->" + GetTime(sw.ElapsedMilliseconds));
                //sw.ElapsedMilliseconds属性可以得到本次计时的秒数。
            }
            Console.ReadKey();
        }

        public static void GetList()
        {
            //泛型其实是指定了类型，所以没有装箱和拆箱的过程，性能提高
            // List<int> list = new List<int>();
             var list = new ArrayList();//<------关键这里(注释上一句)
            for (int i = 0; i < 1000000; i++)
            {
                list.Add(i);//装箱
            }
            foreach (int j in list)
            {
                int b = j;//拆箱
            }
            
        }
        //定义获取时间函数，返回值为字符串
        public static string GetTime(long t)
        {
            //计算小时,用毫秒总数除以(1000*60*24),后去掉小数点
            long hour = t / (1000 * 60 * 24);
            //计算分钟,用毫秒总数减去小时乘以(1000*60*24)后,除以(1000*60),再去掉小数点
            long min = (t - hour * (1000 * 60 * 24)) / (1000 * 60);
            //同上
            long sec = (t - hour * (1000 * 60 * 24) - min * (1000 * 60)) / 1000;
            long msec = t - hour * (1000 * 60 * 24) - min * (1000 * 60) - sec * 1000;
            //拼接字符串
            string timeString =  min.ToString() + ":" + sec.ToString() + ":" + msec.ToString();
            return timeString;
        }
    }
}
